import java.util.ArrayList;
import java.util.List;

public class t54 {
    static List<Integer> list = new ArrayList<>();
    //54. 螺旋矩阵 中等
    public static void main(String[] args) {
        int arr[][] = {{1,2,3,4,5,6,7,8,9}};
        //int arr[][] = {{6,7},{10,11}};
        System.out.println(spiralOrder(arr));
    }
//    递归解法
    public static List<Integer> spiralOrder(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        list.add(matrix[0][0]);
        for(int i =1;i<n;i++){
            //---->
            list.add(matrix[0][i]);
           // System.out.println(matrix[0][i]);
        }
        for(int i =1;i<m;i++){
            //-----V
           // System.out.println(matrix[n - 1][i]);
            list.add(matrix[i][n-1]);
        }

        for(int i =n-2;i>=0;i--){
            //<-----
            if(m>1){
                list.add(matrix[m-1][i]);
            }
            //  System.out.println(matrix[m - 1][i]);
        }
        for(int i = m-2;i>=1;i--){
            //-------A
            if(n>1){
                list.add(matrix[i][0]);
            }

            //System.out.println(matrix[i][0]);
        }
        System.out.println(list);
        int a = m-2;
        int b = n-2;
        if(a>1&&b>1){
            int arr[][] = new int [a][b];
            for(int i = 1;i<=a;i++){
                for(int j = 1;j<=b;j++){
                    arr[i-1][j-1] = matrix[i][j];
                    System.out.print(arr[i - 1][j - 1]+" ");
                }
                //System.out.println();
            }
            return spiralOrder(arr);
        }else if(a>1 && b>0){
            int arr[][] = new int[a][1];
            for(int i = 1;i<=a;i++){
                arr[i-1][0] = matrix[i][1];
                System.out.println(arr[i - 1][0]);
            }
            return spiralOrder(arr);
        }else if(b>1 &&a>0){
            int arr[][] = new int[1][b];
            for(int i = 1;i<=b;i++){
                arr[0][i-1] = matrix[1][i];
                System.out.println(arr[0][i - 1]);
            }
            return spiralOrder(arr);
        }else if(a==1&&b==1){
            list.add(matrix[1][1]);
        }
            return list;

    }
    //模拟 3ms
//    public static List<Integer> spiralOrder(int[][] matrix) {
//        List<Integer> list = new ArrayList<>();
//        int k = matrix.length*matrix[0].length;
//        int ii = matrix.length;
//        int jj = matrix[0].length;
//        int p = 0;
//        int m = 0;
//        int i =0;
//        int j =0;
//        while (k!=0){
//            while (j<jj){
//                System.out.println("-->");
//                list.add(matrix[i][j++]);
//                k--;
//                if(k==0){
//                    return list;
//                }
//            }
//            j--;i++;
//           System.out.println(list);
//            while(i<ii){
//                System.out.println("--V");
//                list.add(matrix[i++][j]);
//                k--;
//                if(k==0){
//                    return list;
//                }
//            }
//            i--;
//            m++;ii--;
//            j--;
//            System.out.println(list);
//            while (j>=p){
//                System.out.println("<--");
//                k--;
//                list.add(matrix[i][j--]);
//                if(k==0){
//                    return list;
//                }
//            }
//            j++;p++;
//            i--;
//            System.out.println(list);
//            while(i>=m){
//                System.out.println("--A");
//                k--;
//                list.add(matrix[i--][j]);
//                if(k==0){
//                    return list;
//                }
//            }
//            jj--;
//            i++;
//            j++;
//            System.out.println(list);
//
//        }
//        return list;
//    }
}
